#ifndef __DRIP_RATE_H
#define __DRIP_RATE_H

#include "bsp_system.h"

// 定义滴速传感器引脚
#define Drop_PORT        GPIOA
#define Drop_PORT_Pin    GPIO_Pin_0

// 滴速状态定义
#define DRIP_STATUS_NORMAL     0     // 正常滴速
#define DRIP_STATUS_TOO_FAST   1     // 滴速过快
#define DRIP_STATUS_TOO_SLOW   2     // 滴速过慢
#define DRIP_STATUS_NO_DROP    3     // 无滴落

// 滴速参数定义
#define DRIP_WINDOW_TIME       10000 // 滴速计算窗口时间(ms)
#define DRIP_NO_DROP_ALARM     8000  // 无滴报警时间(ms)
#define DRIP_RATE_MIN          10    // 最低滴速(滴/分钟)
#define DRIP_RATE_MAX          180   // 最高滴速(滴/分钟)

// 点滴的参数
extern float Dosage;               //药水的总量
extern unsigned char Drip_Velocity;                // 水滴的滴速(滴/分钟)
extern unsigned int Instant_Drip_Velocity;        // 即时滴速(滴/分钟)

// 函数声明
void Drip_rate_Init(void);                    // 初始化滴速检测
void Drip_rate_task(void);                    // 滴速处理函数
void Drip_Rate_Calculation(void);             // 计算滴速
void Calculate_Instant_Rate(void);            // 计算即时滴速

// 数据获取函数
unsigned char Get_Drip_Velocity(void);         // 获取当前滴速
unsigned char Get_Instant_Drip_Velocity(void); // 获取即时滴速
unsigned char Get_Drip_Status(void);           // 获取滴速状态
unsigned long int Get_Drip_Count(void);        // 获取总滴数
float Dosage_Count(void);            // 获取剩余药量
void Reset_Drip_Counter(void);               // 重置滴速计数器

#endif
